import os
import matplotlib.pyplot as plt
from matplotlib import style
style.use("fivethirtyeight")
from matplotlib.image import imread
import pandas as pd
import numpy as np
import seaborn as sns
datadir="C:\\Users\\personal\\Desktop\\Covid-19 x-Ray image\\corona"
os.listdir(datadir)
train_path=datadir+"//train//"
test_path=datadir+"//test//"
os.listdir(train_path)
corona_patients_trainingset=train_path+"corona"
normal_patients_trainingset=train_path+"normal"
corona_patients_testset=test_path+"corona"
normal_patients_testset=test_path+"normal"
os.listdir(corona_patients_trainingset)[0:5]
os.listdir(normal_patients_trainingset)[0:5]
corona_patient_xray_image=corona_patients_trainingset+"//01E392EE-69F9-4E33-BFCE-E5C968654078.jpeg"
corona_image=imread(corona_patient_xray_image)
corona_image
print(corona_image.shape[0])
print(corona_image.shape[1])
plt.figure(figsize=(10,6))
plt.imshow(corona_image)
plt.grid(False)
plt.show()
normal_patient_xray_image=normal_patients_trainingset+"//IM-0135-0001.jpeg"
normal_image=imread(normal_patient_xray_image)
plt.figure(figsize=(10,6))
plt.imshow(normal_image)
plt.grid(False)
plt.show()
plt.figure(figsize=(19,12.5))
for i in range(25):
plt.subplot(5,5,i+1)
plt.grid(False)
plt.gca().set_xticks([])
plt.gca().set_xticks([])
img=corona_patients_trainingset+"//"
for j in os.listdir(corona_patients_trainingset)[i:i+1]:
img=img+j
plt.imshow(imread(img))
plt.show()
plt.figure(figsize=(19,12.5))
for i in range(25):
plt.subplot(5,5,i+1)
plt.grid(False)
plt.gca().set_xticks([])
plt.gca().set_xticks([])
img=normal_patients_trainingset+"//"
for j in os.listdir(normal_patients_trainingset)[i:i+1]:
img=img+j
plt.imshow(imread(img))
plt.show()
print(len(os.listdir(corona_patients_trainingset)))
print(len(os.listdir(normal_patients_trainingset)))
print(len(os.listdir(corona_patients_testset)))
print(len(os.listdir(normal_patients_testset)))
cdim1=[]
cdim2=[]
l=len(os.listdir(corona_patients_trainingset))
for i in range(l):
img=corona_patients_trainingset+"//"
for j in os.listdir(corona_patients_trainingset)[i:i+1]:
img=img+j
cdim1.append(imread(img).shape[0])
cdim2.append(imread(img).shape[1])
print(max(cdim1))
print(min(cdim1))
print(max(cdim2))
print(min(cdim2))
plt.figure(figsize=(10,6))
sns.jointplot(cdim1,cdim2)
ndim1=[]
ndim2=[]
l=len(os.listdir(normal_patients_trainingset))
for i in range(l):
img=normal_patients_trainingset+"//"
for j in os.listdir(normal_patients_trainingset)[i:i+1]:
img=img+j
ndim1.append(imread(img).shape[0])
ndim2.append(imread(img).shape[1])
print(max(ndim1))
print(min(ndim1))
print(max(ndim2))
print(min(ndim2))
plt.figure(figsize=(10,6))
sns.jointplot(ndim1,ndim2)
print(np.mean(cdim1))
print(np.mean(cdim2))
print(np.mean(ndim1))
print(np.mean(ndim2))
dim1=int((np.mean(cdim1)+np.mean(ndim1))//2)
dim2=int((np.mean(cdim2)+np.mean(ndim2))//2)
shape=(dim1,dim2,3)
print(dim1,dim2)
imageshape=(500,500,3)
from tensorflow.keras.preprocessing.image import ImageDataGenerator
datagen=ImageDataGenerator(rotation_range=5,
width_shift_range=0.1,
height_shift_range=0.1,
shear_range=0.1,
zoom_range=0.1,
horizontal_flip=False,
vertical_flip=False,
fill_mode='nearest')
plt.figure(figsize=(10,6))
plt.imshow(corona_image)
plt.grid(False)
plt.show()
plt.figure(figsize=(10,6))
plt.imshow(datagen.random_transform(corona_image))
plt.grid(False)
plt.show()
datagen.flow_from_directory(train_path)
datagen.flow_from_directory(test_path)
from tensorflow.keras.layers import Dense,Conv2D,MaxPool2D,Flatten
from tensorflow.keras.models import Sequential
from tensorflow.keras.callbacks import EarlyStopping
def createmodel(optimizer="adam",loss="binary_crossentropy"):
model=Sequential()
model.add(Conv2D(filters=32,kernel_size=(3,3),input_shape=(500,500,3),activation="relu"))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Conv2D(filters=64,kernel_size=(3,3),input_shape=(500,500,3),activation="relu"))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Conv2D(filters=64,kernel_size=(3,3),input_shape=(500,500,3),activation="relu"))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(128,activation="relu"))
model.add(Dense(1,activation="sigmoid"))
model.compile(optimizer=optimizer,loss=loss,metrics=["accuracy"])
return model
model=createmodel()
model.summary()
callbacks=EarlyStopping(monitor="val_loss",mode="min",patience=2)
train_image_gen=datagen.flow_from_directory(train_path,
target_size=imageshape[:2],
color_mode='rgb',
batch_size=12,
class_mode='binary')
test_image_gen=datagen.flow_from_directory(test_path,
target_size=imageshape[:2],
color_mode='rgb',
batch_size=12,
class_mode='binary',
shuffle=False)
results=model.fit_generator(train_image_gen,epochs=10,
validation_data=test_image_gen,
callbacks=[callbacks])
from tensorflow.keras.models import model_from_json
model_json=model.to_json()
with open("model.json","w") as json_file:
json_file.write(model_json)
model.save_weights("model.h5")
json_file=open("model.json","r")
loaded_model_json=json_file.read()
json_file.close()
loaded_model=model_from_json(loaded_model_json)
loaded_model.load_weights("model.h5")
loaded_model.compile(loss="binary_crossentropy",optimizer="adam",metrics=["accuracy"])
loaded_model.evaluate_generator(test_image_gen)
loaded_model.metrics_names
loss=pd.DataFrame(model.history.history)
loss
plt.figure(figsize=(10,6))
loss[["loss","val_loss"]].plot()
plt.figure(figsize=(10,6))
loss[["accuracy","val_accuracy"]].plot()
y_pred=loaded_model.predict_classes(test_image_gen)
y_predict_proba=loaded_model.predict_proba(test_image_gen)
from sklearn.metrics import confusion_matrix,classification_report,accuracy_score
print(confusion_matrix(test_image_gen.classes,y_pred))
print(classification_report(test_image_gen.classes,y_pred))
print(accuracy_score(test_image_gen.classes,y_pred)*100)
plt.figure(figsize=(10,6))
pl=sorted(y_predict_proba,reverse=False)
plt.plot(pl,marker='o',
color='blue',markerfacecolor='red',
markersize=5)
plt.show()
from tensorflow.keras.preprocessing import image
print(type(image.load_img(corona_patient_xray_image)))
image.load_img(corona_patient_xray_image)
def imageprediction(imgpath):
my_image=image.load_img(imgpath,target_size=imageshape)
my_image=image.img_to_array(my_image)
my_image=np.expand_dims(my_image,axis=0)
class_type=loaded_model.predict_classes(my_image)
class_prob=loaded_model.predict_proba(my_image)
if class_type==[[0]]:
n="Corona virus patient"
acc=(1-class_prob)*100
color="red"
else:
n="Normal patient"
acc=class_prob*100
color="blue"
plt.imshow((image.load_img(imgpath)))
plt.grid(False)
plt.gca().set_xticks([])
plt.gca().set_yticks([])
plt.xlabel(n+str(acc)+" % accuracy",color=color)
plt.show()
imageprediction(corona_patient_xray_image)
lct=len(os.listdir(corona_patients_testset))
for i in range(lct):
img=corona_patients_testset+"//"
for j in os.listdir(corona_patients_testset)[i:i+1]:
img=img+j
imageprediction(img)
lct=len(os.listdir(normal_patients_testset))
for i in range(lct):
img=normal_patients_testset+"//"
for j in os.listdir(normal_patients_testset)[i:i+1]:
img=img+j
imageprediction(img)